#include <stdio.h>

int maxSubArraySum(const int *nums,int length,int *start,int *end)
{
    int Subarraysum = nums[0];
    int maxsum = nums[0];
    int s = 0;
    for (int idx = 1; idx < length; idx++) {
        if (nums[idx] > Subarraysum + nums[idx]) {
            Subarraysum = nums[idx];
            s=idx;
        } 
        else {
            Subarraysum = Subarraysum + nums[idx];
        }
        if(Subarraysum > maxsum)
        {
            maxsum = Subarraysum;
            (*start) = s;
            (*end) = idx;
        }
    }

    return maxsum;
}
int main() {
    int nums[] = {-2,1,-3,4,-1,2,1,-5,4};
    int length = sizeof(nums) / sizeof(nums[0]);
    int start = 0, end = 0;
    int max_sum = maxSubArraySum(nums, length,&start,&end);

    printf("max_sum = %d\n", max_sum);
    printf("最大和子数组=");
    for (int idx = start; idx <= end; idx++) {
        printf("%d ", nums[idx]);
    }
    printf("\n");
    return 0;
}